import {router, addRoutes} from "~/router"
import {getToken} from "~/composables/auth"
import {toast, showFullLoading, hideFullLoading} from "~/composables/util"
import store from "./store"

// 全局前置守卫
let hasGetInfo = false
router.beforeEach(async (to, from, next) => {

    showFullLoading();
    const token = getToken()

    // 没有登录，强制跳转回登录页
    if (!token && to.path != "/login") {
        debugger;
        toast("请先登录", "error")
        return next({path: "/login"})
    }

    // 防止重复登录
    if (token && to.path == "/login") {
        toast("请勿重复登录", "error")
        return next({path: from.path ? from.path : "/"})
    }

    // 如果用户登录了，自动获取用户信息，并存储在vuex当中
    let hasNewRoutes = false
    if (token && !hasGetInfo) {
        let {menus} = await store.dispatch("getinfo")
        hasGetInfo = true
        // 动态添加路由
        hasNewRoutes = addRoutes(menus)
    }

    //设置页面标题
    let title = to.meta.title?to.meta.title:"SpaceX";
    document.title=title;
    //如果有新路由则手动导航
    hasNewRoutes ? next(to.fullPath) : next()
})


router.afterEach((to, from) => {
  hideFullLoading();
});